#ifndef K_MEANS_H
#define K_MEANS_H
#include <QList>
#include <QVector>
#include <QMap>
class K_Means
{
public:
    K_Means();

    int K=0;//k均值算法中的k簇
    int N=0;//每个数据的N维
    int Count=0;//共有count个数据点
    int min_date=0;//数据范围的下限
    int max_date=10000;//数据范围的上限
    QString  record;
    QVector<QVector<QVector<double>>> record_;
    QVector<QVector<double>> allpoint;//存放全部的数据点
    QVector<QVector<double>> Kpoint;//存放K均值的质点

    QMap<int,int> point_belong;

    void setK(int K);
    void random();
    void K_core();
    double TwoPointDistance(QVector<double> a,QVector<double> b);
    int Belong(QVector<double> temp);
    bool isEquate(QVector<QVector<double>> a,QVector<QVector<double>> b);//用来比较两个Kpoint是否一致
    bool KMeans44();//使用kmeans++来获取最初的Kpoint
    QVector<double> afresh(QVector<QVector<double>> temp);//重新计算K点
};

#endif // K_MEANS_H
